package staticdemo;

import static java.lang.Math.*; // 静态导入Math类的所有静态成员
import static java.lang.System.*; // 静态导入System类的所有静态成员
import static staticdemo.StaticDemo.CONSTANT; // 静态导入自定义类的静态成员

/**
 * 静态导入演示
 * 
 * 静态导入（static import）是Java 5引入的特性，
 * 它允许我们直接使用类的静态成员，而无需使用类名前缀。
 */
public class StaticImportDemo {
    
    public static void main(String[] args) {
        System.out.println("=== 静态导入演示 ===\n");
        
        // 使用静态导入前，我们需要这样写：
        // double result1 = Math.sqrt(Math.pow(3, 2) + Math.pow(4, 2));
        // System.out.println("结果: " + result1);
        
        // 使用静态导入后，可以直接使用静态方法名：
        double result1 = sqrt(pow(3, 2) + pow(4, 2));
        out.println("使用静态导入计算直角三角形斜边长: " + result1);
        
        // 静态导入自定义类的静态成员
        out.println("导入的常量: " + CONSTANT);
        
        // 静态导入的Math类的其他常用方法
        out.println("π的值: " + PI);
        out.println("随机数: " + random());
        out.println("绝对值(-10): " + abs(-10));
        out.println("最大值(5, 8): " + max(5, 8));
        out.println("最小值(5, 8): " + min(5, 8));
        
        out.println("\n静态导入的优点：");
        out.println("1. 减少代码冗余，提高代码可读性");
        out.println("2. 当频繁使用某个类的静态成员时，可以简化代码");
        
        out.println("\n静态导入的缺点：");
        out.println("1. 过度使用可能导致代码可读性下降");
        out.println("2. 可能引起命名冲突");
        out.println("3. 不易识别静态成员来自哪个类");
    }
}